package com.shensi.api.admin.domian.coupon.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.shensi.common.core.annotation.Excel;
import com.shensi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;

import java.util.Date;
import java.util.List;

/**
 * 用户优惠卷的查询实例
 */
@Builder
@ApiModel(description = "优惠券活动统计对象")
public class CouponUserDto extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */

    private Integer id;

    /**
     * 客户的unid
     */

    private String unionId;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 油站ID
     */

    private Long enterpriseId;

    public Integer getCcsdId() {
        return ccsdId;
    }

    public void setCcsdId(Integer ccsdId) {
        this.ccsdId = ccsdId;
    }

    // 充值活动id
    private Integer ccsdId;


    @ApiModelProperty(value = "是否已作废 0：否 1：是")
    private String  isDeleted;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "作废时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "作废时间")
    private  Date invalidTime;

    public CouponUserDto() {
        // 空构造方法
    }

    // 其他成员变量和方法...


    public CouponUserDto(Integer id, String unionId, Long enterpriseId, Integer ccsdId, String isDeleted, Date invalidTime, String issueId, Long couponId, String couponIsUsed, String couponIsEffective, Date couponGetTime, Integer userId, String randomFlag, String mobilePhone, List<String> stationIdList, String couponName, String issueName, String couponRemark, String issueRemark, String verificationUserAccount, String couponNo, Integer activityType, String activityName, Date verificationTime, Date verificationBeginTime, Date verificationEndTime, String couponType, String couponAmt, String blogNickName, Date couponEffectiveTime) {
        this.id = id;
        this.unionId = unionId;
        this.enterpriseId = enterpriseId;
        this.ccsdId = ccsdId;
        this.isDeleted = isDeleted;
        this.invalidTime = invalidTime;
        this.issueId = issueId;
        this.couponId = couponId;
        this.couponIsUsed = couponIsUsed;
        this.couponIsEffective = couponIsEffective;
        this.couponGetTime = couponGetTime;
        this.userId = userId;
        this.randomFlag = randomFlag;
        this.mobilePhone = mobilePhone;
        this.stationIdList = stationIdList;
        this.couponName = couponName;
        this.issueName = issueName;
        this.couponRemark = couponRemark;
        this.issueRemark = issueRemark;
        this.verificationUserAccount = verificationUserAccount;
        this.couponNo = couponNo;
        this.activityType = activityType;
        this.activityName = activityName;
        this.verificationTime = verificationTime;
        this.verificationBeginTime = verificationBeginTime;
        this.verificationEndTime = verificationEndTime;
        this.couponType = couponType;
        this.couponAmt = couponAmt;
        this.blogNickName = blogNickName;
        this.couponEffectiveTime = couponEffectiveTime;
    }

    /**
     * 发放方式id
     */

    private String issueId;

    /**
     * 优惠卷id
     */

    private Long couponId;

    /** 用户领取该券后优惠券券码 */
    //@Excel(name = "用户领取该券后优惠券券码")
    // private String couponNo;

    /**
     * 是否使用：0、未使用；1、已使用；
     */
    @Excel(name = "是否使用", readConverterExp = "0=未使用,1=已使用")
    private String couponIsUsed;


    /**
     * 是否有效：1、有效；0、无效；；
     */
    @Excel(name = "是否有效", readConverterExp = "0=已过期,1=生效中,2=已作废，3=已生效")
    @ApiModelProperty(value = "0=已过期,1=生效中,2=已作废，3=已生效")
    private String couponIsEffective;

    /**
     * 优惠券获取时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "优惠券获取时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "发放时间")
    private Date couponGetTime;

    /**
     * $column.columnComment
     */
    private Integer userId;

    private String randomFlag;                //随机数

    public String getRandomFlag() {
        return randomFlag;
    }

    public void setRandomFlag(String randomFlag) {
        this.randomFlag = randomFlag;
    }

    /**
     * 手机号码
     */
    @Excel(name = "注册手机号")
    private String mobilePhone;
    private List<String> stationIdList;

    /**
     * 优惠卷名称
     */
    @Excel(name = "优惠卷名称")
    private String couponName;

    /**
     * 发放方式名称
     */
    @Excel(name = "发放方式名称")
    private String issueName;

    /**
     * 优惠卷标识
     */
    @Excel(name = "优惠卷标识")
    private String couponRemark;

    /**
     * 发放方式标识
     */
    @Excel(name = "发放方式标识")
    private String issueRemark;
    /**
     * 核销员账号
     */
    @Excel(name = "核销员账号")
    private String verificationUserAccount;

    /**
     * 优惠卷编码
     */
    private String couponNo;

    public Integer getActivityType() {
        return activityType;
    }

    public void setActivityType(Integer activityType) {
        this.activityType = activityType;
    }

    public String getActivityName() {
        return activityName;
    }

    public void setActivityName(String activityName) {
        this.activityName = activityName;
    }

    /**
     * 优惠券活动类型，0表示"手动领取"，1表示"支付成功后发放", 2表示"充值发放", 4表示"手动发放"
     */
    @ApiModelProperty(value = "发放类型，以优惠券统计页面发放类型下拉框为准")
    private Integer activityType;
    /**
     * 优惠券活动名称
     */
    @ApiModelProperty(value = "发放活动")
    private String activityName;
    /**
     * 优惠券获取时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "优惠核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "核销时间")
    private Date verificationTime;

    /**
     * 优惠券核销开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date verificationBeginTime;

    /**
     * 优惠券核销结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date verificationEndTime;

    /**
     * 优惠卷类型
     */
    @Excel(name = "优惠卷类型", readConverterExp = "1=现金,2=折扣,3=兑换")
    private String couponType;

    /**
     * 优惠卷金额
     */
    @Excel(name = "优惠卷金额")
    private String couponAmt;

    /**
     * 注册昵称
     */
    @Excel(name = "注册昵称")
    private String blogNickName;

    /**
     * 固定时间-优惠券有效期截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "固定时间-优惠券有效期截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "到期时间")
    private Date couponEffectiveTime;

    public Date getVerificationBeginTime() {
        return verificationBeginTime;
    }

    public void setVerificationBeginTime(Date verificationBeginTime) {
        this.verificationBeginTime = verificationBeginTime;
    }

    public Date getVerificationEndTime() {
        return verificationEndTime;
    }

    public void setVerificationEndTime(Date verificationEndTime) {
        this.verificationEndTime = verificationEndTime;
    }

    public Date getVerificationTime() {
        return verificationTime;
    }

    public void setVerificationTime(Date verificationTime) {
        this.verificationTime = verificationTime;
    }

    public String getCouponNo() {
        return couponNo;
    }

    public void setCouponNo(String couponNo) {
        this.couponNo = couponNo;
    }

    public String getVerificationUserAccount() {
        return verificationUserAccount;
    }

    public void setVerificationUserAccount(String verificationUserAccount) {
        this.verificationUserAccount = verificationUserAccount;
    }


    public String getCouponRemark() {
        return couponRemark;
    }

    public void setCouponRemark(String couponRemark) {
        this.couponRemark = couponRemark;
    }

    public String getIssueRemark() {
        return issueRemark;
    }

    public void setIssueRemark(String issueRemark) {
        this.issueRemark = issueRemark;
    }

    public String getCouponType() {
        return couponType;
    }

    public void setCouponType(String couponType) {
        this.couponType = couponType;
    }

    public String getCouponAmt() {
        return couponAmt;
    }

    public void setCouponAmt(String couponAmt) {
        this.couponAmt = couponAmt;
    }



    public Long getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Long enterpriseId) {
        this.enterpriseId = enterpriseId;
    }

    public Date getCouponGetTime() {
        return couponGetTime;
    }

    public void setCouponGetTime(Date couponGetTime) {
        this.couponGetTime = couponGetTime;
    }

    public String getCouponName() {
        return couponName;
    }

    public void setCouponName(String couponName) {
        this.couponName = couponName;
    }

    public String getIssueName() {
        return issueName;
    }

    public void setIssueName(String issueName) {
        this.issueName = issueName;
    }

    @Override
    public List<String> getStationIdList() {
        return stationIdList;
    }

    @Override
    public void setStationIdList(List<String> stationIdList) {
        this.stationIdList = stationIdList;
    }

    public String getMobilePhone() {
        return mobilePhone;
    }

    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    public Integer getUserId() {
        return userId;
    }


    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getBlogNickName() {
        return blogNickName;
    }

    public void setBlogNickName(String blogNickName) {
        this.blogNickName = blogNickName;
    }



    public String getUnionId() {
        return unionId;
    }

    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }


    public String getIssueId() {
        return issueId;
    }

    public void setIssueId(String issueId) {
        this.issueId = issueId;
    }

    public Long getCouponId() {
        return couponId;
    }

    public void setCouponId(Long couponId) {
        this.couponId = couponId;
    }

    public String getCouponIsUsed() {
        return couponIsUsed;
    }

    public void setCouponIsUsed(String couponIsUsed) {
        this.couponIsUsed = couponIsUsed;
    }

    public String getCouponIsEffective() {
        return couponIsEffective;
    }

    public void setCouponIsEffective(String couponIsEffective) {
        this.couponIsEffective = couponIsEffective;
    }


    public Date getCouponEffectiveTime() {
        return couponEffectiveTime;
    }

    public void setCouponEffectiveTime(Date couponEffectiveTime) {
        this.couponEffectiveTime = couponEffectiveTime;
    }



    public String getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(String isDeleted) {
        this.isDeleted = isDeleted;
    }

    public Date getInvalidTime() {
        return invalidTime;
    }

    public void setInvalidTime(Date invalidTime) {
        this.invalidTime = invalidTime;
    }

    @Override
    public String toString() {
        return "CouponUser{" +
                "id=" + id +
                ", unionId='" + unionId + '\'' +
                ", enterpriseId=" + enterpriseId +
                ", ccsdId=" + ccsdId +
                ", isDeleted='" + isDeleted + '\'' +
                ", invalidTime=" + invalidTime +
                ", issueId='" + issueId + '\'' +
                ", couponId=" + couponId +
                ", couponIsUsed='" + couponIsUsed + '\'' +
                ", couponIsEffective='" + couponIsEffective + '\'' +
                ", couponGetTime=" + couponGetTime +
                ", userId=" + userId +
                ", randomFlag='" + randomFlag + '\'' +
                ", mobilePhone='" + mobilePhone + '\'' +
                ", stationIdList=" + stationIdList +
                ", couponName='" + couponName + '\'' +
                ", issueName='" + issueName + '\'' +
                ", couponRemark='" + couponRemark + '\'' +
                ", issueRemark='" + issueRemark + '\'' +
                ", verificationUserAccount='" + verificationUserAccount + '\'' +
                ", couponNo='" + couponNo + '\'' +
                ", activityType=" + activityType +
                ", activityName='" + activityName + '\'' +
                ", verificationTime=" + verificationTime +
                ", verificationBeginTime=" + verificationBeginTime +
                ", verificationEndTime=" + verificationEndTime +
                ", couponType='" + couponType + '\'' +
                ", couponAmt='" + couponAmt + '\'' +
                ", blogNickName='" + blogNickName + '\'' +
                ", couponEffectiveTime=" + couponEffectiveTime +
                '}';
    }
}
